/* 
 * File:   FileServiceProxy.h
 * Author: nahuel
 *
 * Created on May 24, 2013, 8:29 PM
 */

#ifndef FILESERVICEPROXY_H
#define	FILESERVICEPROXY_H


#include <string>
#include <stdint.h>
#include "client_SocketAsincronico.h"

using namespace TP::Comunicacion;

namespace TP { namespace Servicios {

#define FILE_SERVICE_NAME "FILE_SERVICE"
#define FS_DECLARAR_ARCHIVO "DECLARE_FILE"
#define FS_PUT_CHUNK "PUT_CHUNK"
#define FS_DEFINIR_ARCHIVO "DEFINE_FILE"
    
#define FS_OK "OK"
#define FS_ERROR "ERROR"

class FileServiceProxy {
    private:
        SocketAsincronico* _socket;
        
    public:
        FileServiceProxy(SocketAsincronico* pSocket);
        
        // Declara un archivo nuevo
        void DeclareFile(const uint32_t &pToken, std::string& fileName);
        
        // Agrega al final del archivo fileName el bloque de bytes chunk
        bool PutFileChunk(const uint32_t &pToken, std::string& fileName, const uint32_t &pChunkNumber, const uint8_t* pChunk, const size_t pChunkSize);
        
        // Termina de definir el archivo
        bool DefineFile(const uint32_t &pToken, std::string& fileName);
        
        //FileServiceProxy(const FileServiceProxy& orig);
        virtual ~FileServiceProxy();
};

}}

#endif	/* FILESERVICEPROXY_H */

